当前位置:  开发笔记 > 编程语言 > 正文

数字的总和2 ^ 1000

如何解决《数字的总和2^1000》经验,为你挑选了3个好方法。

2 ^ 15 = 32768,其数字之和为3 + 2 + 7 + 6 + 8 = 26.

数字2次幂1000(2 ^ 1000)的数字之和是多少?

任何人都可以在java中为这个问题提供解决方案或算法吗?



1> bruno conde..:

这是我的解决方案:

public static void main(String[] args) {

    ArrayList n = myPow(2, 100);

    int result = 0;
    for (Integer i : n) {
        result += i;
    }

    System.out.println(result);
}

public static ArrayList myPow(int n, int p) {
    ArrayList nl = new ArrayList();
    for (char c : Integer.toString(n).toCharArray()) {
        nl.add(c - 48);
    }

    for (int i = 1; i < p; i++) {
        nl = mySum(nl, nl);
    }

    return nl;
}

public static ArrayList mySum(ArrayList n1, ArrayList n2) {
    ArrayList result = new ArrayList();

    int carry = 0;

    int max = Math.max(n1.size(), n2.size());
    if (n1.size() != max)
        n1 = normalizeList(n1, max);
    if (n2.size() != max)
        n2 = normalizeList(n2, max);

    for (int i = max - 1; i >= 0; i--) {
        int n = n1.get(i) + n2.get(i) + carry;
        carry = 0;
        if (n > 9) {
            String s = Integer.toString(n);
            carry = s.charAt(0) - 48;
            result.add(0, s.charAt(s.length() - 1) - 48);
        } else
            result.add(0, n);
    }

    if (carry != 0)
        result.add(0, carry);

    return result;
}

public static ArrayList normalizeList(ArrayList l, int max) {
    int newSize = max - l.size();
    for (int i = 0; i < newSize; i++) {
        l.add(0, 0);
    }
    return l;
}

这段代码可以通过多种方式得到改进......这只是为了证明你可以在没有BigInts的情况下完美地完成它.

问题是将每个数字转换为列表.这样你可以做基本的总和,如:

123456
+   45
______
123501


如你所说,这是一个算法/数学问题.2 ^ 32或2 ^ 64限制只是机器处理器强加的实施限制.我认为使用BigInts只会让你更接近理想算术.
对于BigInts来说,这是一个微不足道的问题.布鲁诺是完全正确的,因为这不是问题的重点.

2> 小智..:
int result = 0;

String val = BigInteger.valueOf(2).pow(1000).toString();

for(char a : val.toCharArray()){
    result = result + Character.getNumericValue(a);
}
System.out.println("val ==>" + result);

如果你知道如何使用biginteger,这很简单.



3> Boojum..:

我不会提供代码,但java.math.BigInteger应该使它变得无关紧要。

推荐阅读
大大炮
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有